home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-05-21 | 3.2 KB | 137 lines | [TEXT/NWPM] |
- Sieve
- // :doObj('add,'Sieve)
- // :doObj('build,'Sieve)
- // :doObj('remove,'Sieve)
- {
- // ---------------------------------------------------------------------------------------
- // Freeware...
- // The standard sieve benchmark for the Newton.
- // Info: Runs in about 143 seconds on my OMP.
- // Runs in about 65 seconds on my MP100.
- //
- // Thanks to Steve Weyer for explaining a few things
- // and making some suggestions about the GoBtn object
- //
- // Ver 0.3 9/17/94 -RunNewt
- // Ver 1.0 5/18/95 - Newt 3.0
- // ---------------------------------------------------------------------------------------
- _proto: 'protoApp,
- title: "Sieve",
- ViewBounds: RelBounds(0,10,220,100),
- _package: {
- version: 100,
- copyright: "©1994,1995 S.Koren. All rights reserved.",
- icon: :GetIcon("Sieve"),
- devSignature: "SKoren",
- },
-
- }
- -----
- Sieve+about
- {
- _proto: 'protoFloatNGo,
- viewBounds:RelBounds(5,5,200,90),
- }
-
- -----
- Sieve+AboutBtn
- {_proto: 'protoTextButton,
- text: "About...",
- viewBounds: RelBounds(5,5,60,16),
- buttonClickScript:func()
- about:open();
-
- }
-
- -----
- Sieve+SStatus
- {
- _proto: 'protoStaticText,
- viewBounds: RelBounds(20,30,200,16),
- text: "Prime benchmark."
- }
-
- -----
- Sieve+Status
- {
- _proto: 'protoStaticText,
- viewBounds: RelBounds(20,50,200,16),
- text: "Calculates primes from"
- }
-
- -----
- Sieve+GoBtn
- {
- _proto: 'protoTextButton,
- text: "Go...",
- viewBounds: RelBounds(150,5,60,16),
- buttonClickScript:func()
- begin
- SetValue(Status,'text , "");
- SetValue(EStatus,'text , "Please wait...");
- // SetValue will wait to display until end of buttonClickScript unless...
- RefreshViews(); // force screen update (use judiciously/minimally)
- local x, size, i, k, prime, count, iter, long ;
- size := 8192;
- long := Ticks(); // start timer
-
- for iter := 1 to 10 do
- begin
- count := 0;
- x := NIL; // to avoid memory problem of old&new arrays co-existing for a moment
- x := Array(size+1, 1); // reallocating (with new initial value) seems faster than recycling&filling
- for i := 1 to size do
- if x[i] = 1 then
- begin
- prime := i + i + 3;
- for k := (i+prime) to size by prime do
- x[k] := 0;
- count := count + 1;
- end;
- end;
-
- SetValue(SStatus,'text ,"Start:" && long); // NumberStr optional
- j := Ticks();
- i := (j-long) / 60;
- SetValue(Status,'text , "End :" && j);
- SetValue(EStatus,'text ,"Elap.:" && i && "sec.");
- :Notify(3,EnsureInternal("Sieve"), // avoid later "grip of death"
- EnsureInternal("Num primes:" & count && "Time:" && i));
- end;
- }
-
-
- -----
- Sieve+EStatus
- {
- _proto: 'protoStaticText,
- viewBounds: RelBounds(20,70,200,16),
- text: "1 to 8192, 10 times."
- }
-
-
- -----
- Sieve.about+maboutText
- {
- // about text
-
- viewclass: 'clParagraphView,
- text: "by Serg Koren \u000D\u " & Sieve._package.copyright & " \u000D\u SergK@eworld.com \u000D\u Freeware." ,
- viewFlags: 3,
- viewBounds: RelBounds(5,20,200,80),
- }
-
-
- -----
- Sieve.about+title
- {
- // about title
-
- _proto: protoStaticText,
- viewBounds: RelBounds ( 20,5 ,150 ,16 ),
- // reformat version to x.xx in text
- text: "Sieve - Ver." && SubStr(NumberStr(Sieve._package.version),0,1) & "." & SubStr(NumberStr(Sieve._package.version),1,2),
- }
-
- -----
-